home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 6796 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  1.0 KB

  1. Path: god.bel.alcatel.be!btmpj7!ian
  2. From: ian@rsd.bel.alcatel.be (Ian Ward)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Tough FACTORIAL math problem...
  5. Date: 15 Feb 1996 09:11:42 GMT
  6. Organization: Alcatel Bell Telephone
  7. Distribution: world
  8. Message-ID: <4futce$r3b@btmpjg.god.bel.alcatel.be>
  9. References: <4fr8be$ass@news.iconn.net>
  10. Reply-To: ian@rsd.bel.alcatel.be
  11. NNTP-Posting-Host: btmpj7.rsd.bel.alcatel.be
  12.  
  13.  
  14. Working out the last non zero digit of a factorial is much easier
  15. than working out the factorial.
  16. This algorithm might not be exactly right but its thereabouts
  17. Note : it's just typed in and it's not in 'C' either.
  18.  
  19.  
  20. function last_digit (num : in positive) return positive is
  21.    sings : array (0 .. 9) of integer :=
  22.       (1, 1, 2, 6, 4, 2, 2, 4, 2, 8);
  23.    tens  : array (0 .. 3) of integer := (8, 4, 2, 6);
  24.    ret_val : integer := sings (num rem 10);
  25. begin
  26.    if num > 9
  27.    then
  28.       ret_val := ret_val * tens ((num/10-1) rem 4);
  29.    end if;
  30.    return ret_val;
  31. end;
  32.  
  33. ---
  34. Ian Ward's opinions only : ian@rsd.bel.alcatel.be
  35.  
  36.